
// 路由守卫
import router from '@/router'
import store from '@/store'
import getPageTitle from '@/utils/get-page-title'
// import NProgress from 'nprogress' // 引入NProgress
// import 'nprogress/nprogress.css' // 引入NProgress样式
/*
to:要去哪个页面
from:从哪里来
next:是一个函数
如果直接放行 next()
如果调到其他页 next(其他页)
*/
const whiteList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  /* must call `next` */
  console.log(to.path, '去哪里')
  console.log(from.path, '从哪里来')
  // 调用getPageTitle方法 在utils里
  document.title = getPageTitle(to.meta.title)
  // document.title = `人力资源管理-${to.meta.title}`
  // document.title = '人力资源管理-' + to.meta.title
  // NProgress.start()// 开启进度条 跳转时开启

  const token = store.state.user.token

  if (token) {
    if (to.path === '/login') {
      console.log('已经登陆了,不能再去登录页,跳转首页')
      next('/') // next如果指定了跳转页面,就不会执行router.afterEach
      // NProgress.done()
    } else {
      console.log('已经登陆了,不是去登录页,放行')
      // 调用actions里面的函数
      // 判断vuex里面有没有信息 没有发请求 有就发
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/setUserInfo')
      }
      next()// 放行到首页
    }
  } else {
    // 没有登录
    // 是否白名单,不需要token,/login||404
    // whiteList.includes()判断输入的值在不在数组中,返回值是布尔类型
    if (whiteList.includes(to.path)) {
      console.log('拥有白名单,直接放行')
      next()
    } else {
      console.log('没有登录,没有白名单,跳转登录页')
      next('/login')
      // NProgress.done()
    }
  }
})

// router.afterEach(
//   NProgress.done() // 关闭进度条
// )
